/*
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * This code was generated by https://code.google.com/p/google-apis-client-generator/
 * (build: 2014-07-22 21:53:01 UTC)
 * on 2014-07-31 at 12:58:59 UTC 
 * Modify at your own risk.
 */

package net.toby200.canalstoppages.stoppages;

/**
 * Service definition for Stoppages (v1).
 *
 * <p>
 * This is an API
 * </p>
 *
 * <p>
 * For more information about this service, see the
 * <a href="" target="_blank">API Documentation</a>
 * </p>
 *
 * <p>
 * This service uses {@link StoppagesRequestInitializer} to initialize global parameters via its
 * {@link Builder}.
 * </p>
 *
 * @since 1.3
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public class Stoppages extends com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient {

    // Note: Leave this static initializer at the top of the file.
    static {
        com.google.api.client.util.Preconditions.checkState(
                com.google.api.client.googleapis.GoogleUtils.MAJOR_VERSION == 1 &&
                        com.google.api.client.googleapis.GoogleUtils.MINOR_VERSION >= 15,
                "You are currently running with version %s of google-api-client. " +
                        "You need at least version 1.15 of google-api-client to run version " +
                        "1.19.0 of the stoppages library.", com.google.api.client.googleapis.GoogleUtils.VERSION);
    }

    /**
     * The default encoded root URL of the service. This is determined when the library is generated
     * and normally should not be changed.
     *
     * @since 1.7
     */
    public static final String DEFAULT_ROOT_URL = "https://canal-stoppages.appspot.com/_ah/api/";

    /**
     * The default encoded service path of the service. This is determined when the library is
     * generated and normally should not be changed.
     *
     * @since 1.7
     */
    public static final String DEFAULT_SERVICE_PATH = "stoppages/v1/";

    /**
     * The default encoded base URL of the service. This is determined when the library is generated
     * and normally should not be changed.
     */
    public static final String DEFAULT_BASE_URL = DEFAULT_ROOT_URL + DEFAULT_SERVICE_PATH;

    /**
     * Constructor.
     *
     * <p>
     * Use {@link Builder} if you need to specify any of the optional parameters.
     * </p>
     *
     * @param transport HTTP transport, which should normally be:
     *        <ul>
     *        <li>Google App Engine:
     *        {@code com.google.api.client.extensions.appengine.http.UrlFetchTransport}</li>
     *        <li>Android: {@code newCompatibleTransport} from
     *        {@code com.google.api.client.extensions.android.http.AndroidHttp}</li>
     *        <li>Java: {@link com.google.api.client.googleapis.javanet.GoogleNetHttpTransport#newTrustedTransport()}
     *        </li>
     *        </ul>
     * @param jsonFactory JSON factory, which may be:
     *        <ul>
     *        <li>Jackson: {@code com.google.api.client.json.jackson2.JacksonFactory}</li>
     *        <li>Google GSON: {@code com.google.api.client.json.gson.GsonFactory}</li>
     *        <li>Android Honeycomb or higher:
     *        {@code com.google.api.client.extensions.android.json.AndroidJsonFactory}</li>
     *        </ul>
     * @param httpRequestInitializer HTTP request initializer or {@code null} for none
     * @since 1.7
     */
    public Stoppages(com.google.api.client.http.HttpTransport transport, com.google.api.client.json.JsonFactory jsonFactory,
                     com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) {
        this(new Builder(transport, jsonFactory, httpRequestInitializer));
    }

    /**
     * @param builder builder
     */
    Stoppages(Builder builder) {
        super(builder);
    }

    @Override
    protected void initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest<?> httpClientRequest) throws java.io.IOException {
        super.initialize(httpClientRequest);
    }

    /**
     * Create a request for the method "getStoppages".
     *
     * This request holds the parameters needed by the stoppages server.  After setting any optional
     * parameters, call the {@link GetStoppages#execute()} method to invoke the remote operation.
     *
     * @return the request
     */
    public GetStoppages getStoppages() throws java.io.IOException {
        GetStoppages result = new GetStoppages();
        initialize(result);
        return result;
    }

    public class GetStoppages extends StoppagesRequest<net.toby200.canalstoppages.stoppages.model.NoticeCollection> {

        private static final String REST_PATH = "noticecollection";

        /**
         * Create a request for the method "getStoppages".
         *
         * This request holds the parameters needed by the the stoppages server.  After setting any
         * optional parameters, call the {@link GetStoppages#execute()} method to invoke the remote
         * operation. <p> {@link
         * GetStoppages#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
         * must be called to initialize this instance immediately after invoking the constructor. </p>
         *
         * @since 1.13
         */
        protected GetStoppages() {
            super(Stoppages.this, "GET", REST_PATH, null, net.toby200.canalstoppages.stoppages.model.NoticeCollection.class);
        }

        @Override
        public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
            return super.executeUsingHead();
        }

        @Override
        public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
            return super.buildHttpRequestUsingHead();
        }

        @Override
        public GetStoppages setAlt(java.lang.String alt) {
            return (GetStoppages) super.setAlt(alt);
        }

        @Override
        public GetStoppages setFields(java.lang.String fields) {
            return (GetStoppages) super.setFields(fields);
        }

        @Override
        public GetStoppages setKey(java.lang.String key) {
            return (GetStoppages) super.setKey(key);
        }

        @Override
        public GetStoppages setOauthToken(java.lang.String oauthToken) {
            return (GetStoppages) super.setOauthToken(oauthToken);
        }

        @Override
        public GetStoppages setPrettyPrint(java.lang.Boolean prettyPrint) {
            return (GetStoppages) super.setPrettyPrint(prettyPrint);
        }

        @Override
        public GetStoppages setQuotaUser(java.lang.String quotaUser) {
            return (GetStoppages) super.setQuotaUser(quotaUser);
        }

        @Override
        public GetStoppages setUserIp(java.lang.String userIp) {
            return (GetStoppages) super.setUserIp(userIp);
        }

        @Override
        public GetStoppages set(String parameterName, Object value) {
            return (GetStoppages) super.set(parameterName, value);
        }
    }

    /**
     * Create a request for the method "registerId".
     *
     * This request holds the parameters needed by the stoppages server.  After setting any optional
     * parameters, call the {@link RegisterId#execute()} method to invoke the remote operation.
     *
     * @param regId
     * @return the request
     */
    public RegisterId registerId(java.lang.String regId) throws java.io.IOException {
        RegisterId result = new RegisterId(regId);
        initialize(result);
        return result;
    }

    public class RegisterId extends StoppagesRequest<Void> {

        private static final String REST_PATH = "setRegisterId/{regId}";

        /**
         * Create a request for the method "registerId".
         *
         * This request holds the parameters needed by the the stoppages server.  After setting any
         * optional parameters, call the {@link RegisterId#execute()} method to invoke the remote
         * operation. <p> {@link
         * RegisterId#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)}
         * must be called to initialize this instance immediately after invoking the constructor. </p>
         *
         * @param regId
         * @since 1.13
         */
        protected RegisterId(java.lang.String regId) {
            super(Stoppages.this, "POST", REST_PATH, null, Void.class);
            this.regId = com.google.api.client.util.Preconditions.checkNotNull(regId, "Required parameter regId must be specified.");
        }

        @Override
        public RegisterId setAlt(java.lang.String alt) {
            return (RegisterId) super.setAlt(alt);
        }

        @Override
        public RegisterId setFields(java.lang.String fields) {
            return (RegisterId) super.setFields(fields);
        }

        @Override
        public RegisterId setKey(java.lang.String key) {
            return (RegisterId) super.setKey(key);
        }

        @Override
        public RegisterId setOauthToken(java.lang.String oauthToken) {
            return (RegisterId) super.setOauthToken(oauthToken);
        }

        @Override
        public RegisterId setPrettyPrint(java.lang.Boolean prettyPrint) {
            return (RegisterId) super.setPrettyPrint(prettyPrint);
        }

        @Override
        public RegisterId setQuotaUser(java.lang.String quotaUser) {
            return (RegisterId) super.setQuotaUser(quotaUser);
        }

        @Override
        public RegisterId setUserIp(java.lang.String userIp) {
            return (RegisterId) super.setUserIp(userIp);
        }

        @com.google.api.client.util.Key
        private java.lang.String regId;

        /**

         */
        public java.lang.String getRegId() {
            return regId;
        }

        public RegisterId setRegId(java.lang.String regId) {
            this.regId = regId;
            return this;
        }

        @Override
        public RegisterId set(String parameterName, Object value) {
            return (RegisterId) super.set(parameterName, value);
        }
    }

    /**
     * Builder for {@link Stoppages}.
     *
     * <p>
     * Implementation is not thread-safe.
     * </p>
     *
     * @since 1.3.0
     */
    public static final class Builder extends com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient.Builder {

        /**
         * Returns an instance of a new builder.
         *
         * @param transport HTTP transport, which should normally be:
         *        <ul>
         *        <li>Google App Engine:
         *        {@code com.google.api.client.extensions.appengine.http.UrlFetchTransport}</li>
         *        <li>Android: {@code newCompatibleTransport} from
         *        {@code com.google.api.client.extensions.android.http.AndroidHttp}</li>
         *        <li>Java: {@link com.google.api.client.googleapis.javanet.GoogleNetHttpTransport#newTrustedTransport()}
         *        </li>
         *        </ul>
         * @param jsonFactory JSON factory, which may be:
         *        <ul>
         *        <li>Jackson: {@code com.google.api.client.json.jackson2.JacksonFactory}</li>
         *        <li>Google GSON: {@code com.google.api.client.json.gson.GsonFactory}</li>
         *        <li>Android Honeycomb or higher:
         *        {@code com.google.api.client.extensions.android.json.AndroidJsonFactory}</li>
         *        </ul>
         * @param httpRequestInitializer HTTP request initializer or {@code null} for none
         * @since 1.7
         */
        public Builder(com.google.api.client.http.HttpTransport transport, com.google.api.client.json.JsonFactory jsonFactory,
                       com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) {
            super(
                    transport,
                    jsonFactory,
                    DEFAULT_ROOT_URL,
                    DEFAULT_SERVICE_PATH,
                    httpRequestInitializer,
                    false);
        }

        /** Builds a new instance of {@link Stoppages}. */
        @Override
        public Stoppages build() {
            return new Stoppages(this);
        }

        @Override
        public Builder setRootUrl(String rootUrl) {
            return (Builder) super.setRootUrl(rootUrl);
        }

        @Override
        public Builder setServicePath(String servicePath) {
            return (Builder) super.setServicePath(servicePath);
        }

        @Override
        public Builder setHttpRequestInitializer(com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) {
            return (Builder) super.setHttpRequestInitializer(httpRequestInitializer);
        }

        @Override
        public Builder setApplicationName(String applicationName) {
            return (Builder) super.setApplicationName(applicationName);
        }

        @Override
        public Builder setSuppressPatternChecks(boolean suppressPatternChecks) {
            return (Builder) super.setSuppressPatternChecks(suppressPatternChecks);
        }

        @Override
        public Builder setSuppressRequiredParameterChecks(boolean suppressRequiredParameterChecks) {
            return (Builder) super.setSuppressRequiredParameterChecks(suppressRequiredParameterChecks);
        }

        @Override
        public Builder setSuppressAllChecks(boolean suppressAllChecks) {
            return (Builder) super.setSuppressAllChecks(suppressAllChecks);
        }

        /**
         * Set the {@link StoppagesRequestInitializer}.
         *
         * @since 1.12
         */
        public Builder setStoppagesRequestInitializer(
                StoppagesRequestInitializer stoppagesRequestInitializer) {
            return (Builder) super.setGoogleClientRequestInitializer(stoppagesRequestInitializer);
        }

        @Override
        public Builder setGoogleClientRequestInitializer(
                com.google.api.client.googleapis.services.GoogleClientRequestInitializer googleClientRequestInitializer) {
            return (Builder) super.setGoogleClientRequestInitializer(googleClientRequestInitializer);
        }
    }
}
